import { Fragment } from '@/components/Fragment'; import { GridDemo } from './demo'; import { DefaultGridExample, GridResponsiveExample, GridRowAndColumnSpanExample, } from './examples'; import { Example, ExampleCode } from '@/components/Example'; import { ComponentStyleDisplay } from '@/components/ComponentStyleDisplay'; Grid provides a CSS Grid container with style `display: grid`. Any Amplify UI components can be used as grid item children. To learn how to use CSS Grid properties, see the following documentation: - [Grid layout - MDN](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Grids) - [A Complete Guide to Grid - CSS Tricks](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Grids) ## Demo This demo shows how to create a basic layout using the Grid primitive. ## Usage Import the Grid primitive. Use any primitive as grid item child components. ```tsx file=./examples/DefaultGridExample.tsx ``` ### Mapping Grid CSS properties to Grid props We've shortened some of the names of the CSS properties for a cleaner prop API. See the following list prop names (CSS => Grid props): #### Grid container: - `grid-auto-columns` => `autoColumns` - `grid-auto-flow` => `autoFlow` - `grid-template-areas` => `templateAreas` - `grid-template-columns` => `templateColumns` - `grid-template-rows` => `templateRows` - `column-gap` => `columnGap` - `row-gap` => `rowGrap` - `gap` => `gap` - `align-items` => `alignItems` - `align-content` => `alignContent` - `justify-content` => `justifyContent` #### Grid items \*: - `grid-area` => `area` - `grid-column` => `column` - `grid-column-start` => `columnStart` - `grid-column-end` => `columnEnd` - `grid-row` => `row` - `grid-row-start` => `rowStart` - `grid-row-end` => `rowEnd` *Note: `rowSpan` and `columnSpan` grid item props are transformed to `row` and `column` span rules. ### Row and column span Use the `rowSpan` or `columnSpan` props to stretch a grid item across multiple rows or columns. Available values are any integer value or `auto`. While `rowSpan` and `columnSpan` do not map to CSS properties, they are transformed to `row` and `column` style rules. ```tsx file=./examples/GridRowAndColumnSpanExample.tsx ``` ### Responsive layouts Use array or object syntax to dynamically change layout based on screen size. Resize browser to see example below. See [responsive design](/theming/responsive) for more details. ```tsx file=./examples/GridResponsiveExample.tsx ``` ## CSS Styling ### Target classes